

from flask import g
from flask import session, jsonify

from iHome.utils.response_code import *


def login_required(f):
    """
    用户是否登录判断装饰器
    :param f: 其装饰的函数
    :return: 装饰器
    """
    import functools
    @functools.wraps(f)
    def wrapper(*args, **kwargs):
        # 从 session 中获取当前用户 id
        user_id = session.get('user_id')
        # 如果user_id为None代表用户没有登录,直接返回未登录信息
        if user_id is None:
            return jsonify(errno=RET.SESSIONERR, errmsg="用户未登录")
        else:
            # 否则使用全局 g 变量记录当前用户 id,并调用被装饰的函数
            g.user_id = user_id
            return f(*args, **kwargs)
    return wrapper